import { setPopShow } from './index'
import { showToast } from '@/common/utils/toast'

export const PopMixin = {
  methods: {
    /**
     * 打开弹窗
     * @param type 弹窗类型
     * @param data 弹窗数据
     * @param onClose 关闭弹窗时的回调函数
     */
    $openPop (type, data, onClose) {
      setPopShow('open', type, data, onClose)
    },

    async $openPopAsync (type, data) {
      return new Promise((resolve, reject) => {
        this.$openPop(type, data, (closeData) => {
          resolve(closeData)
        })
      })
    },

    /**
     * 关闭弹窗
     * @param type 弹窗类型
     * @param data 关闭弹窗时传递的数据，可回传给onClose回调函数
     */
    $closePop (type, data) {
      setPopShow('close', type, data)
    },

    /**
     * 通用toast提示
     * @param title toast信息
     * @param callback toast结束回调
     * @param duration toast持续时间
     */
    $toast (title, callback, duration) {
      showToast(title, callback, duration)
    }
  }
}
